/**
 * 
 */
package org.gov.vis.data.controller;

import java.util.HashMap;
import java.util.List;

import org.gov.vis.data.dto.FollowUpDetailsDto;
import org.gov.vis.data.dto.ProgencyDto;
import org.gov.vis.master.controller.BaseCtlr;

/**
 * @author Vishwanath
 *
 */
public interface ProgencyCtlr extends BaseCtlr{
	
	/**
	 * This holds the error messages of the service layer.
	 */
	HashMap<String, String> errorMsgs = new HashMap<String, String>();


	/**
	 * Method called to Add or Edit the Progency
	 * @param progencyDto
	 * @throws Exception
	 */
	public void addOrEditProgency(final ProgencyDto _progencyDto) throws Exception;
	
	/**
	 * Method called to delete the Progency Object based on the passed progency Id
	 * @param _progencyId
	 * @throws Exception
	 */
	public void deleteProgency(long _progencyId) throws Exception;
	
	/**
	 * Method called to get the Progency based on the passed Progency Object
	 * @param progencyDto
	 * @return
	 * @throws Exception
	 */
	public ProgencyDto getProgency(final ProgencyDto _progencyDto) throws Exception;
	
	/**
	 * Method called to get the list of Progency based on the passed Progency Object
	 * @param progencyDto
	 * @return
	 * @throws Exception
	 */
	public List<ProgencyDto> getProgencies(final ProgencyDto _progencyDto) throws Exception;
	
	/**
	 * Method called to search for the Progencies based on the passed Progency Object
	 * @param progencyDto
	 * @return
	 * @throws Exception
	 */
	public List<ProgencyDto> searchProgencies(final ProgencyDto _progencyDto) throws Exception; 
	
	/**
	 * Method called to get the Progency based on the passed primary key Id
	 * @param _progencyId
	 * @return
	 * @throws Exception
	 */
	public ProgencyDto getProgency(final long _progencyId) throws Exception;
	
	/**
	 * Method called to get the Progency based on the passed Code
	 * @param _progencyCode
	 * @return
	 * @throws Exception
	 */
	public ProgencyDto getProgencyOnCode(final String _progencyCode) throws Exception;
	
	/**
	 * Method called to get the Progency based on the passed BreedType
	 * @param _progencyCode
	 * @return
	 * @throws Exception
	 */
	public ProgencyDto getProgencyOnBreedType(final String _progencyBreedType) throws Exception;
	
	/**
	 * Method called to get the Progency based on the passed BullNo
	 * @param _progencyCode
	 * @return
	 * @throws Exception
	 */
	public ProgencyDto getProgencyOnBullNo(final String _progencyBullNo) throws Exception;
	

	/**
	 * Method called to get the Progency based on the passed FarmerName
	 * @param _progencyCode
	 * @return
	 * @throws Exception
	 */
	public ProgencyDto getProgencyOnFarmerName(final String _progencyFarmerName) throws Exception;
	
	/**
	 * Method called to get the Progency based on the passed FarmerCode
	 * @param _progencyCode
	 * @return
	 * @throws Exception
	 */
	public ProgencyDto getProgencyOnFarmerCode(final String _progencyFarmerCode) throws Exception;
	
	/**
	 *Method called to either Add or Edit a Follow Up Details
	 */
	public void addOrEditFollowUpProgency(final FollowUpDetailsDto _followUpProgencyDto) throws Exception;
	
	/**
	 *Method called to Delete a Follow Up Progency
	 */
	public void deleteFollowUpProgency(final long _followUpProgencyId) throws Exception;

}//end interface
